The present inventive concepts relate to computerized memory interface techniques, and more particularly, to a heterogeneous unified memory system and method.
Conventionally, the main system memory of a computer system is dynamic random-access memory (DRAM), which is used to provide fast access to active data for applications or file systems. When the computer system needs more memory resources and the DRAM is full, inactive or “cold” pages in memory are moved out of the DRAM.
There are different types of memory pages, which are conventionally managed by different subsystems. For inactive anon-type memory pages (i.e., user stack or heap pages), a swap subsystem is used, which manages a so-called “swap space.” Separately, for inactive file-type memory pages (i.e., file system data or pages), a disk cache subsystem is used, which manages formatted block caches. Using conventional techniques, it is not possible to leverage the physical space or share information between the two subsystems. When the behavior of applications or input/output (I/O) patterns change, or when the swap subsystem and/or disk cache subsystem need to be adjusted, a reconfiguration of the physical space for each subsystem is often necessary, which usually requires a hard shutdown and reboot of the computer system. Such techniques are not flexible, convenient, or scalable. Embodiments of the inventive concept address these and other limitations in the prior art.